/**
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * <p>
 * http://www.apache.org/licenses/LICENSE-2.0
 * <p>
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package io.gitee.huangjianbo.supos.openapi.core.http;

/**
 * HTTP内容类型枚举
 * <p>
 * 包含常见的内容类型（Content-Type）定义，用于HTTP请求头设置
 * 每个枚举值对应标准的MIME类型及其字符集配置
 *
 * @author tomcat
 * @version 1.0
 */
public enum HttpContentType {
    /**
     * 通配符类型 - 匹配所有内容类型
     */
    WILDCARD("*/*"),

    /**
     * XML文本格式 - 用于XML数据交换
     */
    TEXT_XML("text/xml"),

    /**
     * 纯文本格式 - 适用于无格式文本内容
     */
    TEXT_PLAIN("text/plain"),

    /**
     * HTML文本格式 - 用于返回网页内容
     */
    TEXT_HTML("text/html"),

    /**
     * JSON格式（UTF-8编码） - REST API 常用数据格式
     */
    APPLICATION_JSON("application/json;charset=UTF-8"),

    /**
     * 表单编码格式 - 适用于传统表单提交
     */
    APPLICATION_FORM_URLENCODED("application/x-www-form-urlencoded"),

    /**
     * 二进制流格式 - 用于文件下载或字节流传输
     */
    APPLICATION_OCTET_STREAM("application/octet-stream"),

    /**
     * XML数据格式（UTF-8编码） - 用于结构化数据交换
     */
    APPLICATION_XML("application/xml;charset=UTF-8"),

    /**
     * 表单多部分数据（UTF-8编码） - 适用于文件上传
     */
    MULTIPART_FORM_DATA("multipart/form-data;charset=UTF-8"),

    /**
     * 带边界标识的多部分数据 - 用于构建分块请求
     */
    MULTIPART_FORM_DATA_BOUNDARY("multipart/form-data;charset=UTF-8;" + HttpHeaders.BOUNDARY + "=");

    /**
     * 存储MIME类型字符串
     */
    private final String mimeType;

    /**
     * 枚举值构造函数
     * 
     * @param mimeType 完整的MIME类型字符串
     */
    private HttpContentType(String mimeType) {
        this.mimeType = mimeType;
    }

    /**
     * 获取完整的MIME类型字符串
     * 
     * @return 包含字符集等参数的内容类型字符串
     */
    public String getMimeType() {
        return mimeType;
    }
}
